package br.com.tweetsentiment.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.tweetsentiment.conexao.ConexaoBanco;
import br.com.tweetsentiment.modelo.Palavra;

public class PalavraAnalisadaDAO extends ConexaoBanco{
	
	public Map<String, List<Palavra>> listar()
	{
		Map<String, List<Palavra>> mapPalavraAnalisada = new HashMap<String, List<Palavra>>();
		
		String strQuery = "select palavra_analisada.id, palavra_analisada.palavra, palavra_analisada.peso, palavra_nao_analisda.indica_neg_positivo  from palavra_analisada, palavra_nao_analisda where palavra_analisada.palavra = palavra_nao_analisda.palavra;";
		
		try {
			stmt = con.prepareStatement(strQuery);
			rs =  stmt.executeQuery();
			
			while(rs.next()){
				
				Palavra cPalavra = new Palavra();
				
				cPalavra.setId(rs.getInt("palavra_analisada.id"));
				
				cPalavra.setPalavra(rs.getString("palavra_analisada.palavra"));
				
				cPalavra.setPeso(rs.getInt("palavra_analisada.peso"));
				
				String strPosNeg = rs.getString("palavra_nao_analisda.indica_neg_positivo");
				
				List<Palavra> lstPalavra = mapPalavraAnalisada.get(cPalavra.getPalavra());
				
				if(cPalavra.getPeso() > 0 && strPosNeg.equals("positivas") || cPalavra.getPeso() < 0 && strPosNeg.equals("negativa"))
				{
					if(lstPalavra == null)
					{
						lstPalavra = new ArrayList<Palavra>();

						lstPalavra.add(cPalavra);	
					}
					else
					{
						lstPalavra.add(cPalavra);
					}
				}
				else
				{
					if(lstPalavra == null)
					{
						lstPalavra = new ArrayList<Palavra>();
					}
				}
				
				mapPalavraAnalisada.put(cPalavra.getPalavra(), lstPalavra);
			}			
		} catch (SQLException e) {
			System.out.println("Erro na consulta: " + e.getMessage());
			return mapPalavraAnalisada;
		}
		
		return  mapPalavraAnalisada;
	}
}
